/* 
 * FreeRTOS V6.0.2 - Copyright (C) 2010 Real Time Engineers Ltd.
 *
 * ***************************************************************************
 * * * * If you are: * * * * + New to FreeRTOS, * * + Wanting to learn FreeRTOS
 * or multitasking in general quickly * * + Looking for basic training, * * +
 * Wanting to improve your FreeRTOS skills and productivity * * * * then take a
 * look at the FreeRTOS eBook * * * * "Using the FreeRTOS Real Time Kernel - a
 * Practical Guide" * * http://www.FreeRTOS.org/Documentation * * * * A pdf
 * reference manual is also available.  Both are usually delivered * * to your
 * inbox within 20 minutes to two hours when purchased between 8am * * and 8pm
 * GMT (although please allow up to 24 hours in case of * * exceptional
 * circumstances).  Thank you for your support! * * *
 * ***************************************************************************
 *
 * This file is part of the FreeRTOS distribution.
 *
 * FreeRTOS is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License (version 2) as published by the
 * Free Software Foundation AND MODIFIED BY the FreeRTOS exception. ***NOTE***
 * The exception to the GPL is included to allow you to distribute a combined
 * work that includes FreeRTOS without being obliged to provide the source code
 * for proprietary components outside of the FreeRTOS kernel. FreeRTOS is
 * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License and the
 * FreeRTOS license exception along with FreeRTOS; if not it can be viewed
 * here: http://www.freertos.org/a00114.html and also obtained by writing to
 * Richard Barry, contact details for whom are available on the FreeRTOS WEB
 * site.
 *
 * 1 tab == 4 spaces!
 *
 * http://www.FreeRTOS.org - Documentation, latest information, license and
 * contact details.
 *
 * http://www.SafeRTOS.com - A version that is certified for use in safety
 * critical systems.
 *
 * http://www.OpenRTOS.com - Commercial support, development, porting,
 * licensing and training services. */

#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H

#include <msp430x54xA.h>

/* 
 * Two interrupt examples are provided -
 *
 * + Method 1 does everything in C code. + Method 2 uses an assembly file
 * wrapper.
 *
 * Code size: Method 1 uses assembly macros to save and restore the task
 * context, whereas method 2 uses functions. This means method 1 will be
 * faster, but method 2 will use less code space.
 *
 * Simplicity: Method 1 is very simplistic, whereas method 2 is more elaborate.
 * This elaboration results in the code space saving, but also requires a
 * slightly more complex procedure to define interrupt service routines.
 *
 * Interrupt efficiency: Method 1 uses the compiler generated function prologue
 * and epilogue code to save and restore the necessary registers within an
 * interrupt service routine (other than the RTOS tick ISR). Should a context
 * switch be required from within the ISR the entire processor context is
 * saved. This can result in some registers being saved twice - once by the
 * compiler generated code, and then again by the FreeRTOS code. Method 2 saves
 * and restores all the processor registers within each interrupt service
 * routine, whether or not a context switch actually occurs. This means no
 * registers ever get saved twice, but imposes an overhead on the occasions
 * that no context switch occurs. */

#define configINTERRUPT_EXAMPLE_METHOD 1

/*-----------------------------------------------------------
 * Application specific definitions.
 *
 * These definitions should be adjusted for your particular hardware and
 * application requirements.
 *
 * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
 * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
 *
 * See http://www.freertos.org/a00110.html.
 *----------------------------------------------------------*/

#define configUSE_PREEMPTION		1
#define configUSE_IDLE_HOOK		1
#define configUSE_TICK_HOOK		0
#define configCPU_CLOCK_HZ		( ( unsigned long ) 7995392 )   /* Clock *
                                                                 * setup * from
                                                                 * * main.c * in 
                                                                 * * * * * * * * 
                                                                 * * * * the *
                                                                 * demo *
                                                                 * application. */
#define configTICK_RATE_HZ		( ( portTickType ) 1024 )
#define configMAX_PRIORITIES		( ( unsigned portBASE_TYPE ) 4 )
#define configMINIMAL_STACK_SIZE	( ( unsigned portSHORT ) 128 )
#define configTOTAL_HEAP_SIZE		( ( size_t ) ( 3250 ) )
#define configMAX_TASK_NAME_LEN		( 16 )
#define configUSE_TRACE_FACILITY	0
#define configUSE_16_BIT_TICKS		1
#define configIDLE_SHOULD_YIELD		1

#define configUSE_MUTEXES		1
#define configUSE_COUNTING_SEMAPHORES	1

/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 		0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

/* Set the following definitions to 1 to include the API function, or zero to
 * exclude the API function. */

#define INCLUDE_vTaskPrioritySet		1
#define INCLUDE_uxTaskPriorityGet		1
#define INCLUDE_vTaskDelete			1
#define INCLUDE_vTaskCleanUpResources	        1
#define INCLUDE_vTaskSuspend			1
#define INCLUDE_vTaskDelayUntil			1
#define INCLUDE_vTaskDelay			1
#define INCLUDE_uxTaskGetStackHighWaterMark     0

#endif /* FREERTOS_CONFIG_H */
